home *** CD-ROM | disk | FTP | other *** search
- #ifndef __DYLANTALK__
- #define __DYLANTALK__
-
- #ifndef __WINDOWS__
- #include <Windows.h>
- #endif
-
- #ifndef __DIALOGS__
- #include <Dialogs.h>
- #endif
-
- #ifndef __MENUS__
- #include <Menus.h>
- #endif
-
- #ifndef __SOUND__
- #include <Sound.h>
- #endif
-
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // types
-
- // I have declared a few TYPEs below to help examine 'snd ' resources.
- // I have to break them up into individual pieces because they are
- // variable sized records.
-
- typedef struct {
- short format;
- short numSynths;
- } Snd1Header, *Snd1HdrPtr, **Snd1HdrHndl;
-
- typedef struct {
- short synthID;
- long initOption;
- } SynthInfo, *SynthInfoPtr;
-
- typedef struct {
- short format;
- short refCount;
- } Snd2Header, *Snd2HdrPtr, **Snd2HdrHndl;
-
- typedef SndCommand *SndCmdPtr; // Ptr to a sound command, for type coersion
-
- typedef struct _res_map res_map;
- typedef struct _res_map *res_map_ptr;
- typedef struct _res_map **res_map_handle;
-
- struct _res_map {
- long void1; /* Reserved */
- long void2; /* Reserved */
- long void3; /* Reserved */
- long void4; /* Reserved */
- res_map_handle next_map; /* Handle of next resource map */
- short refNum; /* fRefNum for this file */
- short fileAttrs; /* Resource file attributes for this file */
- short tlOffset; /* Type List Offset from beginning of map */
- short nlOffset; /* Name List Offset from beginning of map */
- };
-
- #define kNumCachedDialogs 5
-
- struct WordQueue {
- Handle aWord[0];
- };
- typedef struct WordQueue WordQueue, *WordQueuePtr;
-
- struct DylanTalkGlobals {
- DialogPtr openDialogs[kNumCachedDialogs]; // Dialogs we’ve already talked about
- PicHandle aboutPicture; // Handle to DylanTalk about box
- StringPtr firstDialogString; // String we’re going to say
- WordQueuePtr wordQueue; // Queue of said words
- SndChannelPtr dylanSndChannel; // Sound channel
- Handle dylanTalkIcons; // Handle to DylanTalk menu icons
- StringHandle preferencesFileName; // Name of preferences file
- long preferencesDirID; // Directory ID if DylanTalk Preferences folder
- short preferencesVRefNum; // VRefNum of DylanTalk Preferences
- short personalityFile; // File reference number of current personality file
- short personalityItem; // Item number in menu of current personality;
- Boolean playingControlSound; // True if we’re speaking a button title
- };
- typedef struct DylanTalkGlobals DylanTalkGlobals, *DylanTalkGlobalPtr, **DylanTalkGlobalHandle;
-
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // constants
-
- #define kNoComp 'NONE'
- #define k3to1Comp 'MAC3'
- #define k6to1Comp 'MAC6'
- #define kNumChannels 1 // one channel in the sound header
- #define kContinousOn 1
- #define kContinousOff 0
-
- #define kDylanTalkPersonalityFileType 'Prsn'
- #define kDylanTalkCreator 'DTlk'
- #define gestaltDylanTalk kDylanTalkCreator
-
- #define rDylanTalkPreferencesFile 128 // 'STR ' resource containing name of preferences folder and file
- #define rDefaultPersonality 129 // 'STR ' resource containing name of default personality
- #define rPreferredPersonality 130 // 'STR ' resource containing name of preferred personality
-
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // macros
-
- // Define HiWrd and LoWrd macros for efficiency.
- #define HiWrd(aLong) (((aLong) >> 16) & 0xFFFF)
- #define LoWrd(aLong) ((aLong) & 0xFFFF)
-
- #define WindowList (*(WindowPeek*)0x9D6)
-
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Routine prototypes
-
- #pragma parameter __D0 StringToNumber(__A0)
- pascal long StringToNumber(ConstStr255Param theString)
- = {0x3F3C,0x0001,0xA9EE};
-
- Handle PlayWord(SndChannelPtr channel, StringPtr word, short refNum);
- Boolean CheckForNumber(ConstStr255Param word);
- OSErr PlaySound(Handle theSound,SndChannelPtr channel );
- Handle GetSoundResourceForWord(ConstStr255Param word);
- void AddSound(Handle sndHandle,SndChannelPtr channel);
- long GetBufferOffset(Handle sndHandle);
- void QuietChannel(SndChannelPtr channel);
- void KillChannel( SndChannelPtr channel, Boolean waitForSoundToFinish );
- void FreeQueue(DylanTalkGlobalPtr globals);
- pascal void SpeakStringSounds(DylanTalkGlobalPtr globals);
- pascal void KillStringSounds(DylanTalkGlobalPtr globals);
- pascal void ConvertStringToUpperCase(StringPtr text);
- pascal Boolean FindCharacterRun(StringPtr text, short offset, StringPtr stringToSpeak, short *runStartOffset);
-
- pascal void OpenPersonalityFile(void);
- pascal void ChooseNewPersonality(short itemNumber, MenuHandle personalityMenu);
- pascal short SwitchPersonalityFile(Str255 personalityFile);
- pascal void FillPersonalityMenu(MenuHandle personalityMenu);
-
- pascal void DylanTalkAbout(void);
- #endif